Improve line length handling of end-of-line breakables in call chains #463
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
When calculating the line length for call chains, we do some hackery to make common expressions render nicely. Namely, we generally chop off the last do/end block in order to have e.g.
MyClass.do_stuff.each do ...
not split to multiple lines all the time. However, we were also chopping off the block parameters when we did this, which meant that instead of breaking the call chain when the params went over the line length, we'd break the block parameters, which led to a lot of situations of this shape:That's pretty unfortunate -- instead, we should leave the block args intact whenever possible and consider them part of the call chain. We can still chop off the final block's body like we did before, which keeps most of the existing behavior, but this renders more nicely for most common cases as well.